#ifndef _NE_FONT_MANAGER_H_
#define _NE_FONT_MANAGER_H_

#include <common/Singleton.h>
#include <system/ResourceManager.h>
#include <graphics/Font.h>

namespace ne
{
    class NEAPI FontManager : public ResourceManager, public Singleton<FontManager>
    {
        public:
            FontManager();

            FontPtr createFontFromTexture(Texture &texture, const uint32_t fontSize,
                                          const uint32_t width, const uint32_t height);

            FontPtr createTrueTypeFont(const std::string &name,
                                       const std::string &fileName,
                                       const uint32_t fontSize,
                                       const FontHintType hint);

            virtual ~FontManager();

        public:
            static FontManager& GetSingleton();

            static FontManager* GetSingletonPtr();

        protected:
            Resource* createImplement(const uint64_t id,
                                      const std::string &name,
                                      const std::string &fileName,
                                      const bool isManual,
                                      ManualResourceLoader *pLoader);
    };
}

#endif
